iT邦幫忙

2026 iThome 鐵人賽

DAY 11
1
IT Operation

連網路壞在哪都不知道,怎麼成為系統網路工程師?系列 第 11

Day.11|明明接在同一台交換器,為什麼彼此看不到?

  • 分享至 

  • xImage
  •  

「這兩台電腦明明都接在同一台 Switch,為什麼不能互相 Ping?」

第一次碰到這種狀況時,很容易懷疑:

  • 網路線壞了
  • Switch Port 故障
  • Windows Firewall 擋住
  • IP Address 設定錯誤
  • 對方電腦沒有開機

但檢查後卻發現:

  • 兩個 Port 都是 Up
  • 兩台電腦都有正確 IP
  • 各自都能正常上網
  • 連接的是同一台實體交換器
  • 只有彼此無法直接通訊

真正的原因可能很單純:

它們被放在不同 VLAN。

這就是企業網路很常見的情況——兩台設備在實體上距離很近,甚至插在相鄰 Port,邏輯上卻可能像住在兩座不同城市。

要互相通訊,還得經過 Layer 3 Routing。


先理解 Broadcast Domain

在沒有 VLAN 的簡單 Layer 2 網路中,同一台 Switch 上的裝置通常位於相同 Broadcast Domain。

當某台電腦送出 Broadcast Frame,例如 ARP Request:

誰是 192.168.1.50

Switch 會將這個 Frame Flood 到同一 VLAN 中除了來源 Port 以外的其他相關 Port。

同一個 Broadcast Domain 裡的設備都可能收到。

如果公司只有幾台設備,這種設計可能還能運作;但當規模變大,所有裝置都擠在同一個 Broadcast Domain,問題就會逐漸出現:

  • Broadcast 流量增加
  • 故障影響範圍變大
  • 部門之間缺乏隔離
  • 訪客可接觸企業設備
  • 印表機、攝影機、Server 與 Client 全混在一起
  • 安全政策難以管理
  • 網路調整風險增加

因此,企業通常會透過 VLAN 將一個大型 Layer 2 網路拆成多個較小的 Broadcast Domain。


VLAN 是什麼?

VLAN 全名是:

Virtual Local Area Network

它能將同一台實體 Switch,切分成多個彼此隔離的邏輯網路。

例如一台 48 Port Switch 可以這樣分配:

VLAN 10:IT 部門
VLAN 20:一般辦公區
VLAN 30:產線設備
VLAN 40:IP Phone
VLAN 50:Server
VLAN 60:印表機
VLAN 100:訪客 Wi-Fi

即使這些設備都連到同一台 Switch,不同 VLAN 的 Broadcast 仍不會直接互相傳遞。

可以把它理解成:

一棟實體大樓,被切成多個不同門禁區域。

大家確實住在同一棟樓,但不是看到隔壁有扇門,就能直接走進去。


VLAN 能解決什麼問題?

1. 縮小 Broadcast Domain

不同 VLAN 的 Broadcast 不會彼此直接傳遞。

VLAN 20 的 ARP Request 不會被 Flood 到 VLAN 30,能降低不必要的 Broadcast 影響。

2. 隔離不同類型設備

企業可以將不同安全等級的設備分開,例如:

  • 員工電腦
  • 訪客裝置
  • 伺服器
  • 攝影機
  • 印表機
  • 生產設備
  • 管理網路

3. 套用不同政策

不同 VLAN 可以設定不同的:

  • ACL
  • Firewall Policy
  • QoS
  • DHCP Scope
  • DNS
  • Internet 權限
  • 存取範圍

4. 降低故障範圍

如果某個 VLAN 發生 Broadcast Storm,理論上影響會先限制在該 Broadcast Domain,而不是直接擴散到所有設備。

不過,如果 Loop 發生在 Trunk 或核心位置,事情還是可能迅速變得很熱鬧,所以不能把 VLAN 當成防止一切事故的結界。


VLAN 和 IP 網段有什麼關係?

一般企業設計中,通常會讓一個 VLAN 對應一個 IP Subnet。

例如:

VLAN 用途 Subnet Gateway
10 IT 10.10.10.0/24 10.10.10.1
20 Office 10.10.20.0/24 10.10.20.1
30 Production 10.10.30.0/24 10.10.30.1
50 Server 10.10.50.0/24 10.10.50.1
60 Printer 10.10.60.0/24 10.10.60.1

如此可以讓 VLAN 與 Layer 3 網路邊界一致,管理與排錯比較直觀。

但要注意:

VLAN 和 Subnet 是不同層的概念。

  • VLAN 屬於 Layer 2
  • IP Subnet 屬於 Layer 3

只是實務上經常一對一搭配。

技術上可以在同一 VLAN 放入多個 Subnet,也可以透過特殊設計讓相同 Subnet 出現在不同位置,但這些做法通常會增加複雜度。

對一般企業網路而言,一個 VLAN 對應一個 Subnet,會比較容易維護。


同 VLAN 的設備如何通訊?

假設:

PC-A:10.10.20.10/24
PC-B:10.10.20.20/24

兩者都在 VLAN 20。

PC-A 判斷 PC-B 位於同一網段,因此會先發送 ARP Request:

誰是 10.10.20.20?

Switch 收到後,會在 VLAN 20 內 Flood。

PC-B 回覆自己的 MAC Address,接著 PC-A 就能直接建立 Ethernet Frame 傳送給 PC-B。

這段通訊:

  • 不需要 Default Gateway
  • 不需要 Router
  • 不會跨 VLAN
  • 主要依靠 ARP 與 Switch MAC Address Table

當然,端點防火牆仍可能阻擋 Ping 或其他服務。

因此,兩台同 VLAN 設備 Ping 不通,不代表 VLAN 一定有問題,還需要區分:

  • Layer 2 不通
  • IP 設定錯誤
  • ARP 異常
  • 端點 Firewall 阻擋 ICMP
  • 目標服務沒開
  • Port Isolation

不同 VLAN 為什麼不能直接互通?

假設:

PC-A:10.10.20.10/24,VLAN 20
PC-B:10.10.30.20/24,VLAN 30

PC-A 判斷 PC-B 位於不同網段,因此會把封包交給:

10.10.20.1

也就是 VLAN 20 的 Default Gateway。

接下來需要由 Layer 3 裝置將封包路由到 VLAN 30。

如果網路中沒有:

  • Router
  • Layer 3 Switch
  • SVI
  • Router-on-a-Stick
  • Firewall Routing

兩個 VLAN 就不會互通。

即使存在 Layer 3 Routing,仍可能被以下機制阻擋:

  • ACL
  • Firewall Policy
  • Private VLAN
  • VRF
  • 回程路由
  • 端點 Firewall

所以不同 VLAN 無法 Ping,不一定是故障。

它可能本來就是安全設計。

例如訪客 Wi-Fi 無法存取 Server VLAN,通常是值得慶幸的事情,而不是要立刻修掉的問題。


Access Port 是什麼?

Access Port 通常只屬於一個 VLAN,主要連接一般終端設備,例如:

  • 電腦
  • 印表機
  • 攝影機
  • 一般 Server
  • 不支援 VLAN Tag 的裝置

Cisco 常見設定概念如下:

interface GigabitEthernet1/0/10
 switchport mode access
 switchport access vlan 20

代表連到這個 Port 的終端,會被放入 VLAN 20。

終端通常不需要知道 VLAN 20 的存在。

它送出的 Ethernet Frame 沒有 802.1Q Tag,Switch 收到後會根據 Access Port 設定,將它歸類到 VLAN 20。

Switch 從 Access Port 送出資料給終端時,也通常會移除 VLAN Tag。

對使用者電腦而言,它只覺得自己接上一條普通網路線。

背後 VLAN 怎麼切,它完全不需要操心,這部分交給IT操心就好。


Trunk Port 是什麼?

Trunk Port 可以承載多個 VLAN,常用於:

  • Switch 與 Switch
  • Switch 與 Router
  • Switch 與 Firewall
  • Switch 與 AP
  • Switch 與虛擬化主機
  • Switch 與 Wireless Controller

Trunk 通常透過 IEEE 802.1Q Tag,標示每個 Frame 屬於哪個 VLAN。

例如一條 Switch 上聯需要承載:

VLAN 10
VLAN 20
VLAN 30
VLAN 50

若只有實體線路卻沒有 VLAN Tag,對端設備就無法知道每個 Frame 原本來自哪個 VLAN。

Access 與 Trunk 的完整差異會放在下一篇詳細討論。

目前先記住:

  • Access Port:通常承載一個 VLAN
  • Trunk Port:通常承載多個 VLAN

Switch 如何知道 MAC 在哪個 Port?

Switch 會根據收到 Frame 的 Source MAC 學習 MAC Address Table。

例如 Switch 從:

Gi1/0/10

收到來源 MAC:

AAAA.BBBB.CCCC

而該 Port 位於 VLAN 20,Switch 就會建立:

VLAN 20
AAAA.BBBB.CCCC
→ Gi1/0/10

Cisco 可使用類似指令查看:

show mac address-table

或指定 VLAN:

show mac address-table vlan 20

可能看到:

Vlan    Mac Address       Type       Ports
20      aaaa.bbbb.cccc    DYNAMIC    Gi1/0/10

之後若目的 MAC 是 AAAA.BBBB.CCCC,Switch 就知道要從 Gi1/0/10 送出。


MAC Address Table 會以 VLAN 區分

同一個 MAC Address 的學習資訊會包含 VLAN。

這是很重要的觀念。

Switch 不是只記:

MAC → Port

而是更接近:

VLAN + MAC → Port

因此,VLAN 20 的 Broadcast、Unknown Unicast 與 MAC Learning 都限制在 VLAN 20 的 Layer 2 範圍內。

不同 VLAN 即使經過同一台 Switch,也不會直接共享同一個 Broadcast Domain。


Unknown Unicast 會怎麼處理?

如果 Switch 不知道 Destination MAC 在哪裡,會在同一 VLAN 內 Flood 該 Frame。

例如 VLAN 20 的 Frame 目的 MAC 尚未出現在 MAC Table,Switch 會送到:

  • VLAN 20 的其他 Access Port
  • 允許 VLAN 20 的 Trunk Port

但不會送進 VLAN 30 的 Access Port。

當目的設備回覆後,Switch 就能學習它的 Source MAC,後續便可精確轉送。

這再次說明,VLAN 決定 Layer 2 Flooding 的範圍。


Broadcast 會去哪裡?

Broadcast MAC 為:

FF:FF:FF:FF:FF:FF

Switch 收到 Broadcast 後,會在同一 VLAN 內 Flood。

常見 Broadcast 包括:

  • ARP Request
  • DHCP Discover
  • 部分服務探索

但不會直接跨到其他 VLAN。

這就是為什麼不同 VLAN 的 Client 無法直接收到彼此的 ARP,也為什麼 DHCP Server 位於其他網段時需要 DHCP Relay。

Router 或 Layer 3 Switch 不會普通地轉送 Layer 2 Broadcast。

不然公司每個 VLAN 的廣播都混在一起,切 VLAN 就切了個寂寞。


Port 設定錯誤會出現什麼症狀?

假設某位員工應該位於 VLAN 20,但他的 Switch Port 被設為 VLAN 30。

可能出現:

  • 拿到 VLAN 30 的 DHCP
  • Gateway 變成 10.10.30.1
  • 無法存取原部門資源
  • 套用錯誤 ACL
  • Internet 權限不同
  • 可以連到不該接觸的設備
  • AD 或 DNS 行為異常

如果 VLAN 30 沒有 DHCP,則可能直接拿到:

169.254.x.x

使用者只會說:

換了座位後就不能上網。

這時不要只看 Client 設定,還要查實際 Switch Port 的 Access VLAN。


如何確認 Access VLAN?

Cisco 常見指令包括:

show interfaces status

可能顯示:

Port      Status       Vlan
Gi1/0/10  connected    20

也可以查看介面設定:

show interfaces GigabitEthernet1/0/10 switchport

重點可能包括:

  • Administrative Mode
  • Operational Mode
  • Access Mode VLAN
  • Trunking Native Mode VLAN
  • Voice VLAN
  • Negotiation

或查看 Running Configuration:

show running-config interface GigabitEthernet1/0/10

不要只看設定裡有:

switchport access vlan 20

還要確認介面實際運作模式是不是 Access。

如果介面被設為 Trunk,Access VLAN 那行不一定會以你預期的方式運作。


Native VLAN 和 Access VLAN 不一樣

這兩個名稱很容易被混在一起。

Access VLAN

用於 Access Port,將未標記的終端流量歸入指定 VLAN。

Native VLAN

用於 802.1Q Trunk,通常處理 Trunk 上未標記的 Frame。

兩端 Native VLAN 不一致,可能造成:

  • Untagged 流量被放進不同 VLAN
  • 管理流量異常
  • STP 警告
  • CDP Native VLAN Mismatch
  • 潛在安全問題

所以看到 VLAN 20,不只要問「是 Access VLAN 還是 Native VLAN」,不能把所有 VLAN 欄位當成同一件事。


Voice VLAN 為什麼能和電腦共用一個 Port?

企業常見接法是:

Switch
→ IP Phone
→ PC

同一個實體 Switch Port 上,可能同時承載:

  • Data VLAN
  • Voice VLAN

例如:

Data VLAN:20
Voice VLAN:40

概念設定:

interface GigabitEthernet1/0/10
 switchport mode access
 switchport access vlan 20
 switchport voice vlan 40

電腦流量通常進入 Data VLAN,IP Phone 則透過 VLAN Tag 使用 Voice VLAN。

這樣可以:

  • 將語音與資料分離
  • 套用不同 QoS
  • 使用不同 DHCP Option
  • 控制不同安全政策

因此,看到一個 Access Port 不一定代表它只能處理一種終端流量。

企業網路永遠很擅長在一句簡單定義後面補上一排例外。


VLAN 不等於安全政策

VLAN 能將設備分成不同 Layer 2 Broadcast Domain,但它本身不會自動決定跨 VLAN 流量是否允許。

例如:

VLAN 20:Office
VLAN 50:Server

如果 Layer 3 Switch 對兩個網段進行 Routing,且沒有 ACL,Office Client 可能仍可存取 Server VLAN。

所以:

  • VLAN 負責邏輯分段
  • Routing 負責跨網段轉送
  • ACL/Firewall 負責存取政策

把印表機放到 Printer VLAN,只是完成隔離的第一步。

如果所有 Client VLAN 都可以無限制存取它,安全效果仍然有限。


同 VLAN 卻無法互通,要查什麼?

兩台設備確認位於同 VLAN,卻仍不能互通時,可以依序檢查。


1. IP 和 Mask

假設:

PC-A:10.10.20.10/24
PC-B:10.10.20.20/16

兩台對本地網段的判斷可能不一致。

雖然這個例子部分流量仍可能碰巧成功,但不一致的 Mask 會讓其他目的地出現奇怪行為。

先確認 IP、Mask 與是否重複。


2. ARP Table

查看是否能解析對方 MAC。

Windows:

arp -a

Linux:

ip neigh

如果狀態為 Incomplete,代表 ARP Request 沒得到回覆。

可能原因:

  • 不在同一 Layer 2
  • VLAN 不同
  • 對方離線
  • Port Isolation
  • 端點不回應
  • Layer 2 路徑中斷

3. MAC Address Table

檢查兩台設備的 MAC 是否都出現在預期 VLAN 與 Port。

如果其中一台 MAC 完全學不到:

  • 它可能沒有送出 Frame
  • 網卡或線路異常
  • Port 設定錯誤
  • 安全機制阻擋

如果 MAC 出現在不預期的 Port:

  • 文件可能過期
  • 線路接錯
  • 設備搬移
  • 中間有 Switch
  • 發生 MAC Flapping

4. Windows Firewall

Windows Firewall 可能阻擋 ICMP Echo Request。

因此,兩台設備 Ping 不通,不代表 Layer 2 不通。

可以改測實際需要的服務,例如:

  • SMB
  • RDP
  • HTTP
  • SSH
  • 應用程式 Port

也可以查看 ARP 是否已成功解析。

若 ARP 正常、指定 TCP Port 可以連,只是 Ping 失敗,問題可能只是 ICMP Policy。

不要為了讓 Ping 變綠,就把整個防火牆永久關閉。


5. Port Isolation

某些 Switch、AP 或無線網路會啟用 Client Isolation。

即使 Client 位於同 VLAN,也不允許它們彼此直接通訊。

這常用於:

  • 訪客 Wi-Fi
  • 公共網路
  • 宿舍
  • 部分 IoT 網路

因此,訪客 Wi-Fi 裡兩台裝置不能互 Ping,可能是正確安全設計。


6. Private VLAN

Private VLAN 能在同一 IP Subnet 內,進一步限制 Layer 2 通訊。

常見角色包括:

  • Promiscuous
  • Community
  • Isolated

Isolated Port 之間不能互通,但可以和 Promiscuous Port 通訊,例如前往 Gateway。

因此可能出現:

  • Client 能上網
  • 能連 Gateway
  • 不能和同 Subnet Client 互通

如果不知道環境使用 Private VLAN,很容易誤判成 Switch 故障。


MAC Flapping 是什麼?

如果同一個 MAC Address 在不同 Port 間反覆出現,Switch 可能產生 MAC Flapping Log。

例如:

MAC aaaa.bbbb.cccc moving between Gi1/0/10 and Gi1/0/20

可能原因包括:

  • Layer 2 Loop
  • 錯誤接線
  • 無線 Client 漫遊
  • 虛擬化或負載平衡設計
  • NIC Teaming
  • 重複 MAC
  • 中間有未記錄的 Switch

如果大量 MAC 同時在上聯間跳動,尤其伴隨 Broadcast 增加與網路不穩,就要警覺 Loop。

若只有單一無線 Client 在兩個 AP 路徑間短暫移動,也可能只是正常漫遊。

Log 是線索,仍要結合拓撲與時間判斷。


VLAN 1 的常見陷阱

Cisco Switch 預設通常會有 VLAN 1,許多 Port 也可能一開始位於 VLAN 1。

新手測試時常覺得:

先插著,反正有通就好。

問題是,過度依賴預設 VLAN 可能造成:

  • 使用者被放入不預期網段
  • 管理與使用者流量混在一起
  • Trunk Native VLAN 設計混亂
  • 未使用 Port 仍可進入網路
  • 文件難以管理
  • 安全邊界不清楚

企業環境通常會依規範:

  • 將使用者分配到明確 VLAN
  • 管理流量使用獨立 VLAN
  • 未使用 Port 放入停用 VLAN
  • 關閉未使用 Port
  • 避免不必要地使用 VLAN 1 承載業務

實際作法仍要依公司架構與政策,不能只因為網路文章說 VLAN 1 很危險,就隔天直接把整間公司改掉。

那不是改善,是替明天的自己安排重大事故。


VLAN 資訊也需要文件化

至少可以維護以下資訊:

VLAN ID 名稱 Subnet Gateway DHCP 用途
10 IT-MGMT 10.10.10.0/24 10.10.10.1 Yes IT 管理
20 OFFICE 10.10.20.0/24 10.10.20.1 Yes 辦公設備
30 PROD 10.10.30.0/24 10.10.30.1 Yes 產線
50 SERVER 10.10.50.0/24 10.10.50.1 No 伺服器
60 PRINTER 10.10.60.0/24 10.10.60.1 Mixed 印表機
100 GUEST 10.10.100.0/24 10.10.100.1 Yes 訪客

還可以記錄:

  • 哪些 Switch 使用該 VLAN
  • 哪些 Trunk 應允許
  • 對應 SSID
  • ACL/Firewall Policy
  • DHCP Scope
  • 負責部門
  • 建立原因
  • 最後確認日期

沒有文件時,新人看到 VLAN 137,通常只能靠名稱猜用途。

如果 VLAN 名稱又剛好叫 TEST2_NEW_FINAL,那就不是排錯,是考古。


一個實際案例:同一台 Switch,只有其中一台不能列印

假設:

PC-A:10.10.20.35/24
PC-B:10.10.30.40/24
Printer:10.10.20.50/24

三台設備都接在同一台 Switch。

現象:

  • PC-A 可以列印
  • PC-B 無法列印
  • PC-A 和 PC-B 都能上網
  • Printer 本身正常

原因是:

  • PC-A 位於 VLAN 20,和 Printer 同網段
  • PC-B 位於 VLAN 30,需要經過 Inter-VLAN Routing
  • VLAN 30 到 VLAN 20 的列印流量未被允許

從使用者角度看,兩台電腦明明坐在隔壁;從網路角度看,它們位於不同 Broadcast Domain,走的路也不相同。

這時解法不是把 PC-B 改到 VLAN 20。

應先確認業務需求與安全政策,再決定是否:

  • 允許必要列印 Port
  • 經由 Print Server
  • 調整 Firewall/ACL
  • 使用正式的 Printer VLAN 設計

為了讓一台印表機能用,就把不同部門全部塞進同一 VLAN,確實很省規則,但也順便省掉了隔離。


VLAN 排錯 SOP

遇到「同一台 Switch,設備卻不能互通」時,可以依序檢查。

第一步:確認這是不是故障

先問:

  • 這兩台設備原本就應該互通嗎?
  • 是否有安全隔離需求?
  • 是否位於訪客、產線或設備網路?
  • 有沒有既有 ACL/Firewall Policy?

不要把正常隔離當成故障修掉。

第二步:確認 IP 與 Subnet

查看:

  • IP Address
  • Subnet Mask
  • Default Gateway
  • DHCP Server
  • 是否位於預期網段

第三步:確認 Switch Port

查看:

  • Port Status
  • Administrative/Operational Mode
  • Access VLAN
  • Voice VLAN
  • Port Security
  • Port Isolation

第四步:查看 MAC Address Table

確認:

  • MAC 是否被學到
  • VLAN 是否正確
  • Port 是否符合實體位置
  • 是否出現 MAC Flapping

第五步:檢查 ARP

若兩端應位於同 VLAN:

  • ARP 是否能取得對方 MAC
  • 是否出現 Incomplete
  • 是否有 Duplicate IP

第六步:排除端點防火牆

不要只測 Ping,應測試實際需要的服務。

第七步:若跨 VLAN,檢查 Layer 3

確認:

  • Default Gateway
  • SVI/Router Interface
  • Inter-VLAN Routing
  • ACL/Firewall
  • 回程路由

第八步:修復後驗證

確認:

  • 兩端的必要服務恢復
  • Client 仍位於正確 VLAN
  • 沒有開放不必要的存取
  • DHCP 與 DNS 正常
  • Port 與 VLAN 文件已更新

Day 11 小結:同一台 Switch,不代表同一個網路

VLAN 能將一台實體 Switch 切分成多個邏輯 Broadcast Domain。

因此:

  • 相鄰 Port 可以屬於不同 VLAN
  • 不同 VLAN 的 Broadcast 不會直接互通
  • 同 VLAN 通訊主要依靠 ARP 與 MAC Address Table
  • 跨 VLAN 通訊需要 Layer 3 Routing
  • VLAN 隔離不等於完整安全政策
  • Ping 不通也可能只是端點 Firewall 或 Isolation

排錯時,不要只問:

這兩台設備是不是接在同一台 Switch?

還要問:

它們分別在哪個 VLAN?使用哪個 Subnet?原本是否允許互通?

實體位置只能告訴我們設備離得近不近,不能決定它們在邏輯網路上是不是鄰居。


上一篇
Day.10|網路時好時壞,最怕的不是斷線而是偶爾斷
系列文
連網路壞在哪都不知道,怎麼成為系統網路工程師?11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言